package teste;

import java.util.ArrayList;

public class Main {
	static int quantidadeProcessos = 10;
	static int	quantidadeCores = 2;
	static int	algoritmo = 0; // 0=FIFO
	static int	quantum = 5;
	//
	static int geradorIdProcessos = quantidadeProcessos;;
	//
	static ArrayList<Processo> listaProntos = new ArrayList<Processo>();
	static ArrayList<Processo> listaExecutando = new ArrayList<Processo>();
	
	public static void main(String[] args) {
		iniciar();
		
		for(int i= 0; i < 3; i++){
			adicionarProcessos();
		}
		
		Escalonador escalonador = new Escalonador(listaProntos, listaExecutando, quantidadeCores, algoritmo, quantum);
		
	}
	
	public static void iniciar() {
		criarListaProntos();
		criarListaExecutando();
	}
	
	public static void criarListaExecutando() {
		for(int i = 0; i < quantidadeCores; i++) {
			listaProntos.get(i).setEstado(0);
			listaExecutando.add( listaProntos.get(0) );
			System.out.println("Adicionando o processo "+ listaProntos.get(0).getId() +" na lista de execucao");
			System.out.println("Removendo o processo "+ listaProntos.get(0).getId() +" da lista de prontos");
			listaProntos.remove(0);
		}
	}
	
	public static void criarListaProntos() {
		if(listaProntos.isEmpty()){
			for(int i = 0; i < quantidadeProcessos; i++) {
				listaProntos.add( new Processo(i) );
				System.out.println("Adicionando o processo "+ i +" na lista de prontos");
			}
		}else{
			for(int i = 0; i < listaProntos.size(); i++) {
				System.out.println("Adicionando o processo "+ i +" da lista de prontos");
				listaProntos.remove(i);
				System.out.println("");
			}
		}
	}
	
	
	public static void adicionarProcessos() {
		geradorIdProcessos = quantidadeProcessos;
		quantidadeProcessos++;
		System.out.println("Adicionando o processo "+ geradorIdProcessos +" apos o inicio na lista de prontos");
		listaProntos.add( new Processo(geradorIdProcessos) );
	}
	
}
